#ifndef TERMINAL_H_
#define TERMINAL_H_

#include <termios.h>
#include <unistd.h>
#include <ctype.h>
#include <string.h>

#include "../global.h"
#include "../string/string.h"

#define TTY_BLACK  "\033[0;30m"
#define TTY_BLUE   "\033[0;34m"
#define TTY_GREEN  "\033[22;32m"
#define TTY_CYAN   "\033[0;36m"
#define TTY_RED    "\033[0;31m"
#define TTY_YELLOW "\033[1;33m"
#define TTY_WHITE  "\033[1;37m"
#define TTY_NONE   "\033[0m"

#define RESET       0
#define BRIGHT      1
#define DIM         2
#define UNDERLINE   3
#define BLINK       4
#define REVERSE     7
#define HIDDEN      8

#define BLACK       0
#define RED         1
#define GREEN       2
#define YELLOW      3
#define BLUE        4
#define MAGENTA     5
#define CYAN        6
#define WHITE       7

/* Reseta para o modo canônico */
void term_reset_input_mode(void);
/* Seta o modo não-canônico */
void term_set_input_mode(void);

/* Seta uma cor no terminal */
void term_color(int attr, int fg);

/* Lê uma linha do terminal */
string *read_line(void);

/* Faz as ações das teclas especiais */
void term_do_backspace(void);
void term_do_up_arrow(void);
void term_do_down_arrow(void);
void term_do_left_arrow(void);
void term_do_right_arrow(void);
void term_do_delete(void);
void term_do_tab(void);
void term_do_home(void);
void term_do_end(void);
void term_do_page_up(void);
void term_do_page_down(void);


#endif /* TERMINAL_H_ */
